package appstudio7i.controladores;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */



import appstudio7i.excepciones.InstrumentoRegistradoException;
import appstudio7i.modelo.Instrumento;
import appstudio7i.modelo.Sala;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.math.BigDecimal;
import java.util.ArrayList;


/**
 *
 * @author Administrador
 */
public class AdmInstrumentos {

    private ArrayList<Instrumento> instrumentos = new ArrayList<Instrumento>();    
    
    private String sRutaBD = "instrumentos.txt";

    public AdmInstrumentos() {
        cargarDatos();
        }
    
    

    public boolean registrarInstrumento(Instrumento instrumento) {
        //verificando los datos del instrumento
        
        verificarDatoBlanco(instrumento);        
        
        boolean repetido=false;
        //Buscando codigo que no se repita
        for(Instrumento i : instrumentos){
            if(i.getCodigo().equals(instrumento.getCodigo()))
                repetido=true;
        }
        if(repetido){
            return false;
        }

        instrumentos.add(instrumento);
        
        //actualizando archivo de salas
        actualizaDatos();

        return true;
    }

    public int obtenerTotalInstrumento() {
       return instrumentos.size();
    }

     public Instrumento obtenerInstrumento(String codigo) {         
         for(Instrumento instrumento : instrumentos){
            if(instrumento.getCodigo().equals(codigo))
                return instrumento;
            }
         return null;
        }

    public void verificarDatoBlanco(Instrumento instrumento2) {
        BigDecimal costo=BigDecimal.valueOf(0);
        if (instrumento2.getCodigo().length()==0 || instrumento2.getTipo().length()==0
            || instrumento2.getMarca().length()==0 || instrumento2.getModelo().length()==0
            || instrumento2.getAnioFabricacion().length()==0||instrumento2.getCosto()==costo||instrumento2.getCosto()==null) {
            throw new InstrumentoRegistradoException("No debe dejar datos en blanco");
        }       
    }

    public ArrayList<Instrumento> cargarDatos() {
        FileReader fr = null;
        BufferedReader br = null;
        
        try {
            fr = new FileReader(sRutaBD);
            br = new BufferedReader(fr);
            String linea;
            
            Instrumento instrumento = null;
            while ((linea = br.readLine()) != null) {
                String [] datos = linea.split("#");
                instrumento = new Instrumento(datos[0], datos[1], datos[2], datos[3], datos[4], BigDecimal.valueOf(Double.valueOf(datos[5])));
                instrumentos.add(instrumento);

            }
            
        } catch (FileNotFoundException e){
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (null != fr) {
                    fr.close();
                } 
            } catch (Exception ee){
                ee.printStackTrace();
            }
        }
        
        return instrumentos;
    }
    
    
    private void actualizaDatos() {        
        try {
            PrintWriter pw = new PrintWriter(new FileWriter(sRutaBD));
            for(Instrumento instrumento : instrumentos){
                //IN01#1#FENDER#STRATOCASTER#2008#25.00#
                pw.println(instrumento.getCodigo() + "#"
                         + instrumento.getTipo() + "#"
                         + instrumento.getMarca() + "#"
                         + instrumento.getModelo() + "#"
                         + instrumento.getAnioFabricacion() + "#"
                         + instrumento.getCosto() + "#");                                                      
            }
            pw.close();
        } catch (Exception ex) {
            ex.printStackTrace();
        }        
    }

}
